Computer programming languages have historically provided great flexibility in implementing desired computer fuctions at the expense of ease of use. For example, in the past, programmers were required to possess intimate knowledge of specific and advanced computer language command syntax and language architecture. This was necessary to provide the required interface between the operator inputs and graphic objects displayed on an output device such as a graphic display or video monitor.
With the increased interest and proliferation of the internet and the World Wide Web, a greater number of programming techniques and languages have evolved for specific implementation on the internet. These programming languages, such as Java.TM. and Perl.TM., allow novice programmers to easily create Websites and other application programs for execution on the World Wide Web. These languages have gained increased popularity as companies realize the benefits of the World Wide Web. More and more companies are creating and maintaining their own Websites for promoting and assisting their businesses. Many larger companies are also creating intranets, or internal internets for disseminating private information throughout the company.
Typically, a Website contains a home page which is the first screen accessed by a visitor to the Website. The home page provides the starting point for a visitor to the Website and usually provides access to subsequent pages in the Website (ordered according to the visitor's responses to particular queries) or to other Websites altogether. Websites may also include executable functions which the visitor can operate. For example, the Website may incorporate key word search engines and automated purchase order forms.
FIG. 1 illustrates a simplified block diagram of a typical Web-based application flow. Block 1 illustrates a first page of a Website or application program displayed to a visitor or user. The displayed page can be a company's home page or can be any page within the company's Website. Usually pages have a means for entering a command into the system. This typically includes using a mouse to "click" on a hot-zone (i. e. a button) or pressing a key, but specialized applications may incorporate touch-screen technology or voice commands.
When a hot zone is activated, a command is transmitted to the Web server 2. The Web server 2 then calls a hard-coded application program 3 which processes the command, retrieves data from a database 4 if necessary, and outputs a response usually in the form of a next displayed page 5.
Currently, this "application flow" usually exists in hard coded application logic which is unique or customized to a particular application. When someone wants to change the application flow, there are two conventional methods for changing Web-based client-server applications. Both methods have substantial drawbacks. The first method involves having a central program that is responsible for all sub-tasks, including performing all the actions desired by the user, determining the next HyperText Markup Language ("HTML") document to display, and retrieving the HTML document from disk or generating it from available data. The principle weakness of this approach is that the central program logic for performing each of these subtasks is mixed with the logic for other sub-tasks. In a complex system, it is difficult to change the program logic for one sub-task without causing a disruption in the performance of the other subtasks. For example, the logic for generating the next HTML document from existing data may have a dependency on the instructions executed in performing the sub-task determined by the previous form. Such dependencies are not inherent, but typical nonetheless because the organization of logic provides no natural separation between the sub-tasks.
The second method of changing the application program involves Web pages which are generated with the use of HTML documents. HTML-based applications link the different pages using hypertext links. These links can be visualized as a spider web with each node in the web representing a different Web page. Small applications using a limited number of pages can be managed with little difficulty because navigation through each link in the web can be easily visualized. As the number of pages and corresponding links increases, and it becomes more difficult or impossible to visualize the entire web of documents, amending or deleting links in the web cannot easily be accomplished without negatively impacting other links and pages. This is further complicated by the fact that a particular page may often not be directly linked to another page but will be linked through other multiple pages. Thus, the deletion of a particular link without knowing all of the corresponding links can adversely impact the overall program.
In view of these problems with editing or changing application programs, a system is needed which organizes the application program based commands so that subsequent editing of the commands is straight forward. It is desirable to provide a system which allows system administrators with little programming knowledge or experience to quickly and easily implement the changes. It is further desirable to separate the logic of performing the requested actions from the logic of generating the code the next action (i.e. screen to be displayed).